const db = require('../db')
// 引入bcrypt
const bcrypt = require('bcryptjs')

// 获取用户信息
exports.getUserInfo = (req, res) => {
  const sqlStr = 'select id,username,nickname,email,user_pic from users where id=?'
  db.query(sqlStr, req.user.id, (err, results) => {
    if(err) return res.cc(err)
    if(results.length !== 1) return res.cc('获取用户信息失败')
    res.send({
      status: 0,
      message: '获取用户信息成功',
      data: results[0]
    })
  })
}

// 更新用户信息
exports.updateUserInfo = (req, res) => {
  const sqlStr = `update users set ? where id=?`
  db.query(sqlStr, [req.body, req.body.id], (err, results) => {
    if(err) return res.cc(err)
    if(results.affectedRows !== 1) return res.cc('修改用户信息失败')
    res.cc('修改用户信息成功', 0)
  })
}

// 修改密码
exports.updatePassword = (req, res) => {
  // 查询是否有该用户
  const sqlStr = `select * from users where id=?`
  db.query(sqlStr, req.user.id, (err, results) => {
    if(err) return res.cc(err)
    if(results.length !== 1) return res.cc('用户不存在')
    // 判断提交的旧密码是否正确(需要引入bcrypt)
    const compareResult = bcrypt.compareSync(req.body.oldpwd, results[0].password)
    if(!compareResult) return res.cc('原密码有误')
    // 更新新密码
    const udSqlStr = `update users set password=? where id=?`
    const newpwd = bcrypt.hashSync(req.body.newpwd, 10)
    db.query(udSqlStr, [newpwd, req.user.id], (err, results) => {
      if(err) return res.cc(err)
      if(results.affectedRows !== 1) return res.cc('修改密码失败')
      res.cc('更新密码成功', 0)
    })
  })
}

// 更新头像
exports.updateAvatar = (req, res) => {
  const sqlStr = `update users set user_pic=? where id=?`
  db.query(sqlStr, [req.body.avatar, req.user.id], (err, results) => {
    if(err) return res.cc(err)
    if(results.affectedRows !== 1) return res.cc('更新头像失败')
    res.cc('更新头像成功', 0)
  })
}